/**
 * @title ChatGPT 3.5
 * @origin 傻妞官方
 * @create_at 2023-04-23
 * @cron 30 5 * * *
 * @rule ai ?
 * @description 我是java写好的后台程序，这只是一个简单的post的请求
 * @author chen
 * @version v1.0
 * @public false
 */

/**
 * v1.0
 * 未加后台逻辑
 */

const s = sender
const ottoStorage = new Bucket('chatHttp')
let platform = s.getPlatform();
let baseHeaders;

function main() {

    // 校验accessToken
    let HttpPost = ottoStorage.get('ChatGPT_HttpPost');
    if(!HttpPost){
        s.reply("请使用命令 ' set chatHttp ChatGPT_HttpPost ? ' ,设置ChatGPT_HttpPost");
        return;
    }

    baseHeaders = {
        'Content-Type': 'application/json'
    }

    // 初始化变量
    let userId = s.getUserId();
    let key = platform + '_' + userId;
    let command = s.param(1);
    switch (command) {
        case "帮助":
            s.reply("输入'ai ?'进行与ChatGPT互动。");
            break;
        case "清空上下文":
            s.reply('吊毛，你再无中生有，暗度陈仓，凭空想象，凭空捏造。没有这个功能！');
            break;
        default:
            // s.reply("尊敬的"+key+"用户，欢迎你使用chatgpt-3.5，请稍等...");
            s.reply("已收到，请稍等...");
            let replyContent = talk(command,key,HttpPost);
            if (!replyContent['data']) {
                s.reply(`嗨嗨嗨，没有获取到接口返回的消息，等会再试试叭`);
            } else {
                s.reply(replyContent['data']);
            }
            break;
    }
}



/**
 * 发送消息
 *
 * @param {string} messageId 消息ID qq_qq号
 * @param {string} prompt 消息内容
 * @returns
 */
function talk(prompt, messageId,HttpPost) {
    let data = {
        "id": messageId,
        "text": prompt
    }
    return requestConversationContent(data,HttpPost)
}

/**
 * 发送会话请求
 *
 * @param {object} data 请求内容
 */
function requestConversationContent(data,HttpPost) {
    let {body, status} = request({
        url: HttpPost,
        method: 'post',
        body: data,
        headers: baseHeaders
    })
    if (status != 200) {
        s.reply(`发送消息请求出错，返回状态码：${status}`);
        return;
    }
    let reply = {};
    reply = JSON.parse(body);
    return reply;
}

main()
